昨天我們學會了如何使用 OpenCV 讀取與顯示圖片,
今天我們要進一步「看懂這張圖片的結構」!
也就是要來認識「影像的屬性」:
✅ 圖片的高度與寬度
✅ 通道數(黑白 vs 彩色)
✅ 每個像素的資料型別
✅ 像素值的存取方式
這些資訊都很基礎,但在做影像處理前務必熟悉!
我們先準備一張圖片(如 image.jpg
)放在程式同一層資料夾中,並讀取它:
import cv2
img = cv2.imread('image.jpg')
使用 .shape 可以快速看到圖片的三個維度:
print(img.shape)
範例輸出:
(300, 400, 3)
這代表什麼意思呢?
項目 | 說明 |
---|---|
300 | 高度(rows)→ 垂直方向像素數 |
400 | 寬度(columns)→ 水平方向像素數 |
3 | 通道數(channels)→ 彩色圖有 3 個通道(BGR) |
💡 如果是灰階圖(黑白),通道數會變成只有一個喔!
每一個像素的數值,其實是儲存在某種「資料型別」中,可以使用 .dtype 來檢查:
print(img.dtype)
常見會顯示:
uint8
這表示每個通道的像素值是 8-bit 整數(0~255),這是 OpenCV 預設的格式。
若想知道整張圖片總共多少個數值(像素 × 通道),可使用 .size:
print(img.size)
範例:
360000
如果是 400 × 300 × 3 通道的彩色圖,總像素值 = 400 × 300 × 3 = 360000
可以使用 img[y, x] 的方式讀取單一像素的 BGR 值:
pixel = img[200, 300]
print("像素值:", pixel)
範例輸出:
[172 188 195]
代表這個像素是 B=172、G=188、R=195。
用昨天的方式打開圖片放大來看,可以對到這指定的位置,上面標示的BGR顏色就是像素值,如下圖。
💡 注意:座標順序是 img[高度, 寬度] = img[y, x]。
今天我們學會了如何查看一張圖片的基本資訊,包括:
shape
:高、寬、通道數dtype
:資料型別(通常是 uint8)size
:整張圖的像素數量img[y, x]
:取單一像素值(BGR)了解這些屬性,可以幫助你後面更容易進行影像的操作、切割、變形或分析!